/**
 * 难度设置数组，包含不同难度级别的配置。
 */
DIFFICULTY_SETTINGS = [
    /**
 * 简单难度的配置。
 * @type {Array}
 */
DIFFICULTY_EASY = [
        nomangle('EASY'),
        true, // simplifiedPhysics
        0.5, // uncontrollableDuration
        0.5, // playerShotInterval
        0.5, // playerLockDuration
        6, // rebelShotInterval
        6, // chopperShotInterval
    ],
    /**
 * 普通难度的配置。
 * @type {Array}
 */
DIFFICULTY_NORMAL = [
        nomangle('NORMAL'),
        false, // simplifiedPhysics
        1, // uncontrollableDuration
        1, // playerShotInterval
        1, // playerLockDuration
        4, // rebelShotInterval
        3, // chopperShotInterval
    ],
    /**
 * 困难难度的配置。
 * @type {Array}
 */
DIFFICULTY_HARD = [
        nomangle('HARD'),
        false, // simplifiedPhysics
        3, // uncontrollableDuration
        999, // playerShotInterval
        1, // playerLockDuration
        4, // rebelShotInterval
        3, // chopperShotInterval
    ],
];

/**
 * 应用指定的难度设置到游戏世界。
 * @param {Object} world - 游戏世界对象。
 * @param {Array} param1 - 难度设置数组，包含标签、简化物理、不可控制持续时间等参数。
 * @param {string} param1[0] - 难度标签。
 * @param {boolean} param1[1] - 是否启用简化物理。
 * @param {number} param1[2] - 玩家不可控制的持续时间。
 * @param {number} param1[3] - 玩家射击间隔。
 * @param {number} param1[4] - 玩家锁定持续时间。
 * @param {number} param1[5] - 叛军射击间隔。
 * @param {number} param1[6] - 直升机射击间隔。
 */
applyDifficulty = (world, [label, simplifiedPhysics, uncontrollableDuration, playerShotInterval, playerLockDuration, rebelShotInterval, chopperShotInterval]) => {
    if (DEBUG) {
        console.log('Applying difficulty', {
            label, simplifiedPhysics, uncontrollableDuration, playerShotInterval, playerLockDuration, rebelShotInterval, chopperShotInterval
        })
    }

    const player = firstItem(world.bucket('player'));
    if (player) {
        player.simplifiedPhysics = simplifiedPhysics;
        player.uncontrollableDuration = uncontrollableDuration;
        player.shotInterval = playerShotInterval;
        player.lockDuration = playerLockDuration;
    }

    for (const rebel of world.bucket('rebel')) {
        rebel.shotInterval = rebelShotInterval;
    }

    for (const chopper of world.bucket('enemy-chopper')) {
        chopper.shotInterval = chopperShotInterval;
    }
}
